<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   
      <title>7.2. Log de Eventos</title>
      <meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2">
      <link rel="home" href="indice.html" title="Manual Usuario gvHidra">
      <link rel="up" href="ch07.html" title="Cap&iacute;tulo 7. Conceptos Avanzados">
      <link rel="prev" href="ch07.html" title="Cap&iacute;tulo 7. Conceptos Avanzados">
      <link rel="next" href="ch07s03.html" title="7.3. Depurando mi aplicaci&oacute;n">
   </head>
   <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
      <div class="navheader">
         <table width="100%" summary="Navigation header">
            <tr>
               <th colspan="3" align="center">7.2. Log de Eventos</th>
            </tr>
            <tr>
               <td width="20%" align="left"><a accesskey="p" href="ch07.html">Anterior</a>&nbsp;
               </td>
               <th width="60%" align="center">Cap&iacute;tulo 7. Conceptos Avanzados</th>
               <td width="20%" align="right">&nbsp;<a accesskey="n" href="ch07s03.html">Siguiente</a></td>
            </tr>
         </table>
         <hr>
      </div>
      <div class="section" title="7.2. Log de Eventos">
         <div class="titlepage">
            <div>
               <div>
                  <h2 class="title" style="clear: both"><a name="d4e4758"></a>7.2. Log de Eventos
                  </h2>
               </div>
            </div>
         </div>
             
         
             
         <p>Funcionamiento del log y los diferentes usos que se le puede
                dar.
         </p>
         
             
         <p>Ponemos especial &eacute;nfasis en su utilizaci&oacute;n como m&eacute;todo de Debug del
                c&oacute;digo en desarrollo.
         </p>
         
             
         <div class="section" title="7.2.1. Introducci&oacute;n">
            <div class="titlepage">
               <div>
                  <div>
                     <h3 class="title"><a name="d4e4762"></a>7.2.1. Introducci&oacute;n
                     </h3>
                  </div>
               </div>
            </div>
                  
            
                  
            <p>El objetivo de este m&oacute;dulo es registrar ciertos eventos, acciones,
                     movimientos, operaciones, ... para poder averiguar lo que est&aacute; haciendo
                     la aplicaci&oacute;n. Por defecto &eacute;stos se registran en una tabla de sistema.
                     Esta tabla se llama tcmn_errlog y hay que <a class="ulink" href="http://zope.coput.gva.es/proyectos/igep/trabajo/igep/script-tabla-log.html" target="_top">crearla</a>
                     previamente a usarla. M&aacute;s adelante se pueden definir otros m&eacute;todos como
                     podr&iacute;a ser el correo, ficheros, ... o mejor <a class="ulink" href="http://pear.php.net/package/Log" target="_top">Pear::Log</a>. En los ficheros
                     de <a class="ulink" href="http://zope.coput.gva.es/proyectos/igep/trabajo/igep/configphp.html" target="_top">configuraci&oacute;n</a>
                     (propiedad DSNZone/dbDSN con id 'gvh_dsn_log') se puede definir una
                     fuente de datos v&aacute;lida para a&ntilde;adir registros a la tabla.
            </p>
            
                  
            <p>Esto habitualmente lo usaremos para detectar errores de una
                     aplicaci&oacute;n en explotaci&oacute;n o para poder realizar una traza detallada de
                     una acci&oacute;n en desarrollo.
            </p>
            
                  
            <p>Hemos realizado una clasificaci&oacute;n de los eventos que se registran
                     en la tabla dependiendo de su gravedad:
            </p>
            
                  
            <div class="table"><a name="d4e4770"></a><p class="title"><b>Tabla 7.2. Tabla de clasificaci&oacute;n de los eventos</b></p>
               <div class="table-contents">
                          
                  
                          
                  <table summary="Tabla de clasificaci&oacute;n de los eventos" border="1">
                     <colgroup>
                        <col width="75" align="left">
                        <col width="300" align="left">
                     </colgroup>
                     <thead>
                        <tr>
                           <th align="center">tipo</th>
                           <th align="center">descripci&oacute;n</th>
                        </tr>
                     </thead>
                     <tbody>
                        <tr>
                           <td align="left">PANIC</td>
                           <td align="left">Errores graves, la aplicaci&oacute;n no deberia seguir
                                            ejecut&aacute;ndose
                           </td>
                        </tr>
                        <tr>
                           <td align="left">ERROR</td>
                           <td align="left">Errores</td>
                        </tr>
                        <tr>
                           <td align="left">WARNING</td>
                           <td align="left">Errores menores</td>
                        </tr>
                        <tr>
                           <td align="left">NOTICE</td>
                           <td align="left">Informaci&oacute;n a nivel de Auditor&iacute;a</td>
                        </tr>
                        <tr>
                           <td align="left">DEBUG_USER</td>
                           <td align="left">Mensajes de traza (debug) del programador</td>
                        </tr>
                        <tr>
                           <td align="left">DEBUG_IGEP</td>
                           <td align="left">Mensajes de traza (debug) de gvHidra</td>
                        </tr>
                     </tbody>
                  </table>
                        
               </div>
            </div><br class="table-break">
            
                  
            <p>Por defecto se registran todos los eventos de los dos primeros
                     tipos. Si queremos cambiarlo, podemos hacerlo indicando a la aplicaci&oacute;n
                     el nivel de sensibilidad. Es decir, indicar que tipo de eventos se
                     tienen que registrar. Para ello se puede escoger de los siguientes
                     valores:
            </p>
            
                  
            <div class="itemizedlist">
               <ul class="itemizedlist" type="disc">
                  <li class="listitem">
                               
                     <p><span class="bold"><strong>LOG_NONE</strong></span> : No registra
                                  nada.
                     </p>
                             
                  </li>
                  <li class="listitem">
                               
                     <p><span class="bold"><strong>LOG_ERRORS</strong></span>: Registra
                                  &uacute;nicamente ERROR y PANIC. (valor por defecto)
                     </p>
                             
                  </li>
                  <li class="listitem">
                               
                     <p><span class="bold"><strong>LOG_AUDIT</strong></span>: Registra todos los
                                  anteriores m&aacute;s WARNING y NOTICE.
                     </p>
                             
                  </li>
                  <li class="listitem">
                               
                     <p><span class="bold"><strong>LOG_ALL</strong></span>: Registra todas las
                                  acciones.
                     </p>
                             
                  </li>
               </ul>
            </div>
            
                  
            <p>El valor lo podemos poner de forma est&aacute;tica en el atributo
                     logSettings del fichero gvHidraConfig.inc.xml de la aplicaci&oacute;n o de
                     forma din&aacute;mica con el m&eacute;todo ConfigFramework-&gt;setLogStatus (ver
                     configuraci&oacute;n).
            </p>
            
                  
            <p>Hay que tener precauci&oacute;n con esta variable, para que en
                     explotaci&oacute;n no se genere m&aacute;s informaci&oacute;n que la necesaria. Normalmente
                     le asignaremos un valor u otro en funci&oacute;n de si estamos en producci&oacute;n o
                     no.
            </p>
                
         </div>
         
             
         <div class="section" title="7.2.2. Crear eventos en el log">
            <div class="titlepage">
               <div>
                  <div>
                     <h3 class="title"><a name="d4e4814"></a>7.2.2. Crear eventos en el log
                     </h3>
                  </div>
               </div>
            </div>
                  
            
                  
            <p>Un programador puede crear eventos en el log simplemente llamando
                     al m&eacute;todo setDebug de la clase IgepDebug.
            </p>
            
                  
            <p>Ejemplo:</p>
            
                  
            <div class="informalexample">
                       
               
                       <pre class="programlisting">function creacionInformes(){
  IgepDebug::setDebug(DEBUG_USER,'Pasamos a crear los informes');
  ....
}
</pre>
                     </div>
            
                  
            <p>En este ejemplo, y dependiendo del valor del atributo logSettings,
                     el programador inserta una entrada en el log que indica que se ha pasado
                     por el m&eacute;todo creacionInformes.
            </p>
            
                  
            <p>El programador podr&aacute; hacer uso del log indicando la gravedad del
                     mensaje que desee atendiendo a la clasificaci&oacute;n. Se recomienda hacer uso
                     de DEBUG_USER si se esta realizando un debug en desarrollo y WARNING o
                     NOTICE si se quiere realizar auditor&iacute;a de lo que realicen los usuarios
                     en explotaci&oacute;n.
            </p>
                
         </div>
         
             
         <div class="section" title="7.2.3. Consulta del Log">
            <div class="titlepage">
               <div>
                  <div>
                     <h3 class="title"><a name="d4e4822"></a>7.2.3. Consulta del Log
                     </h3>
                  </div>
               </div>
            </div>
                  
            
                  
            <p>Para ver los eventos generados, se ha creado una consola que
                     permite consultar lo que se inserta en la tabla de sistema. Se
                     recomienda a los programadores que hagan uso de ella a&ntilde;adiendo en el
                     fichero menuHerramientas.xml la siguiente linea:
            </p>
            
                  
            <div class="informalexample">
                       
               
                       <pre class="programlisting">&lt;opcion titulo="Log Aplicaci&oacute;n" descripcion="Log Aplicaci&oacute;n" urlAbs="igep/_debugger.php" imagen="menu/51.gif"/&gt;</pre>
                     </div>
            
                  
            <p>Hay que tener precauci&oacute;n en este &uacute;ltimo punto para que esta opci&oacute;n
                     no est&eacute; accesible para los usuarios finales.
            </p>
                
         </div>
           
      </div>
      <div class="navfooter">
         <hr>
         <table width="100%" summary="Navigation footer">
            <tr>
               <td width="40%" align="left"><a accesskey="p" href="ch07.html">Anterior</a>&nbsp;
               </td>
               <td width="20%" align="center"><a accesskey="u" href="ch07.html">Subir</a></td>
               <td width="40%" align="right">&nbsp;<a accesskey="n" href="ch07s03.html">Siguiente</a></td>
            </tr>
            <tr>
               <td width="40%" align="left" valign="top">Cap&iacute;tulo 7. Conceptos Avanzados&nbsp;</td>
               <td width="20%" align="center"><a accesskey="h" href="indice.html">Inicio</a></td>
               <td width="40%" align="right" valign="top">&nbsp;7.3. Depurando mi aplicaci&oacute;n</td>
            </tr>
         </table>
      </div>
   </body>
</html>